Caching is a technique widely used in computing to increase performance by keeping frequently accessed or expensive data in memory. In the context of a Web application, caching is used to retain pages or data across HTTP requests and reuse them without the expense of having to recreate them. Many different types of caching exist, such as output caching, fragment caching and data caching. Output caching caches the dynamic response generated by a request. Fragment caching caches portions of a response generated by a request. Data caching caches arbitrary objects programmatically.
Output caching is a mechanism for reusing page responses for multiple requests to the same page in order to avoid performing expensive processing on every request. During the time a page is cached by the output cache, subsequent requests for that page are served from the output cache without processing the code that created it. In output caching, each page specifies settings within the page that define whether and how the page is cached. These settings include items such as: cache duration, how multiple variants are constructed based on client input, and various settings controlling proxy and client caching of the returned response. Discovering and managing these settings requires each page to be inspected individually, which quickly becomes a problem on sites with tens or hundreds and more pages.